cas(Central Authentication Service)详细教程(2) - cas结构详解

CAS的认证过程就是通过执行以下几个相互关联的组件组成

  • PrincipalNameTransformer
    将输入到登录表单的用户标识字符串转换成一个临时的主体名称,然后该主体名称将被指定的Authentication Handler进行验证
  • AuthenticationManager
    AuthenticationManager作为认证子系统的一个入口,其可以接收一个或多个凭据,并调用配置文件中指定的AuthenticationHandler组件对接收到的凭证进行验证。其存储着每次进行验证的结果和确定有效的安全策略
  • AuthenticationHandler
    验证单个凭据并返回认证后的三种可能的结果:成功,失败,未尝试
  • PrincipalResolver
    将认证凭据中的信息转换成一个安全的主体,通常主题中包含一些额外的元数据属性(例如:用户的细节信息如:隶属关系,组关系,邮件,昵称)
  • AuthenticationMetaDataPopulator
    针对认证成功事件设置任意任意元数据的策略组件,该组件通常用于设置特定协议的数据

针对以上组件若未作特殊声明,均在deployerConfigContext.xml中配置

认证管理器

CAS附带了一个简单却又十分灵活的认证管理器PolicyBasedAuthenticationManager,该认证管理器应该可以满足绝大数的需求。PolicyBasedAuthenticationManager认证管理器按照以下步奏进行执行:对于每个给定的凭据将做以下操作。

  • 1.遍历所有已配置的认证处理器
  • 2.如果有一个处理器支持该凭据处理,则尝试对该凭据进行认证
  • 3.若认证成功则将该凭据解析为一个主体
    3.1 检测对该凭据进行认证的处理器是否配置了对应的解析器
    3.2 若有对应解析器则将凭据解析成主体
    3.3 若没有找到对应的解析器,则使用处理器对该凭据进行解析
  • 4.检测安全策略是否满足
  • 5.如果满足安全策略则立即返回
  • 6.若不满足则继续步骤2
  • 若所有的凭证按照给定的安全策略进行检测但都不满足则抛出AuthenticationException

认证处理器

认证处理器就是具体存储认证信息的地方可以把它理解成为数据库,CAS附带支持与其他常见认证系统对接,以下列出了CAS支持的所有认证技术

  • Database
  • JAAS
  • LDAP
  • Legacy
  • OAuth 1.0/2.0, OpenID
  • RADIUS
  • SPNEGO (Windows)
  • Trusted (REMOTE_USER)
  • X.509 (client SSL certificate)
  • Remote Address

参数提取器

参数提取器负责检查所有通过附带在http请求后面的参数,这些参数用于描述跳转过来的客户端。每个不同的协议,对应了相应的参数提取器,每个参数提取器将创建对应的“webApplicationService”实体,该实体包含了参数提取器提取的结果,参数提取器定义在src/main/webapp/WEB-INF/spring-configuration/argumentExtractorsConfiguration.xml配置文件中

-------------本文到此结束,感谢您的阅读-------------